// my_car.h
#ifndef MY_CAR_H
#define MY_CAR_H

#include <QWidget>
#include "globalval.h"
#include <QLabel>

namespace Ui {
class My_Car;
}

class My_Car : public QWidget
{
    Q_OBJECT

public:
    explicit My_Car(QWidget *parent = 0);
    ~My_Car();

public slots:
    void dataUpSlot(const QByteArray& msg);
    void setConnectedState(bool connected);

private slots:
    void onHeadlightClicked();
    void onWarningLightClicked();
    void onUnlockClicked();
    void onLockedClicked();
    void onVentilationClicked();
    void onReduceClicked();
    void onAddClicked();


protected:
    void resizeEvent(QResizeEvent *event) override;

private:
    Ui::My_Car *ui;
    bool isConnected;

    // 按钮状态标志位 (0:关闭状态, 1:开启状态)
    bool headlightState;      // 大灯状态
    bool warningLightState;   // 警示灯状态
    int unlockState;         // 解锁状态 (0:关闭, 1:开启)
    int lockState;           // 上锁状态 (0:关闭, 1:开启)
    bool ventilationState;    // 通风状态
    int engineOn;            // 发动机状态 (0:停止, 1:正常)
    int detectionOn;         // 人员检测状态 (0:无人, 1:有人)

    double airTemp;           // 空调温度
    int mileage;              // 里程

    QLabel *overlayLabel;

    void createOverlay();
    void destroyOverlay();
    void updateDisconnectedState();
    void updateButtonsAvailability();
    void sendControlCommand(const QJsonObject& command);
    void updateButtonStyles();
    void updateLockUnlockState();
    void sendHeadlightCommand(bool state);
    void sendWarningLightCommand(bool state);
    void sendUnlockCommand();
    void sendLockCommand();
    void sendVentilationCommand(bool state);
    void sendAirConditioningCommand(double temperature);

    // 新增：处理发动机和检测状态对按钮的影响
    bool canChangeLockUnlockState();
    void setDeviceOffline();  // 新增：设备离线处理
};

#endif // MY_CAR_H
